/********************************************************
*  Monica Jimenez Anton                                 *
*  Juan Luis Martinez Cesteros                          *
*  Practicas - IGr                                     *
********************************************************/
#include <vcl.h>
#pragma hdrstop

#include "Objetos3D.h"



//---------------------------------------------------------------------------

#pragma package(smart_init)
ObjetoCompuesto3D::ObjetoCompuesto3D(){
    objetos = new Lista<Objeto3D>();
}

void ObjetoCompuesto3D::draw(){
   glPushMatrix();
   glMultMatrixf(this->marco_de_coordenadas->m);
        this->color->putColor4f();
        int tam = objetos->dameNumNodos();
        objetos->inicia();
        for (int i = 1; i <= tam; i++,objetos->avanza())
                  objetos->getActual()->getValor()->draw();

   glPopMatrix();
}
////////////////////////////////////////////////////////////////////////////////
void Esfera::draw(){
     glPushMatrix();
     glMultMatrixf(this->marco_de_coordenadas->m);
       if ( estilo == 0){
                        gluQuadricDrawStyle(quad,GLU_FILL) ;
                }
        else if (estilo == 1){
                        gluQuadricDrawStyle(quad,GLU_LINE);
                }
        gluSphere(quad,radius,slices,stacks);
     glPopMatrix();
}
////////////////////////////////////////////////////////////////////////////////
void Cilindro::draw(){
   glPushMatrix();
   glMultMatrixf(this->marco_de_coordenadas->m);
        if ( estilo == 0){
                        gluQuadricDrawStyle(quad,GLU_FILL) ;
                }
        else if (estilo == 1){
                        gluQuadricDrawStyle(quad,GLU_LINE);
                }
        gluCylinder(quad,base,top,height,slices,stacks);
   glPopMatrix();
}
///////////////////////////////////////////////////////////////////////////////
void Disco::draw(){
   glPushMatrix();
   glMultMatrixf(this->marco_de_coordenadas->m);
        if ( estilo == 0){
                        gluQuadricDrawStyle(quad,GLU_FILL) ;
                }
        else if (estilo == 1){
                        gluQuadricDrawStyle(quad,GLU_LINE);
                }
        gluDisk(quad, radioInterior,radioExterior, lados, anillos);
   glPopMatrix();
}
////////////////////////////////////////////////////////////////////////////////
Objeto3D::Objeto3D(){
        marco_de_coordenadas =new TAfin(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1);
        color=new Color(0,0,0,1);
        estilo = 0 ;
}

Objeto3D::~Objeto3D(){
        delete marco_de_coordenadas;
        delete color;

}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
